package com.hsmw.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hsmw.common.base.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * <p>
 * 订单中需要的车辆数据 现在是作为 订单的池 的数据
 * </p>
 *
 * @author WD
 * @since 2021-02-02
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value="HsmwOrderVehicleRequest对象", description="订单中需要的车辆数据")
@NoArgsConstructor
@AllArgsConstructor
public class HsmwOrderVehicleRequest extends BaseModel {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "订单ID")
    private String orderId;

    @ApiModelProperty(value = " 车辆类型 ")
    private String vehicleType;

    @ApiModelProperty(value = " 车牌型号 ")
    private String vehicleModel;

    @ApiModelProperty(value = "需要的数量")
    private int vehicleNumber;

    @ApiModelProperty(value = "剩余需要的车辆数")
    private int remainVehicleNumber;


    @ApiModelProperty(value = "剩余需要指定公司的车辆数")
    private int remainAppointVehicleNumber;


    @ApiModelProperty(value = "需求状态 ")
    private String requestStatus;


    @ApiModelProperty(value = "混凝土订单状态  1234 ")
    private String concreteOrderStatus;


    @ApiModelProperty(value = "施工部位信息")
    @TableField(exist = false)
    private HsmwConstructionPosition hsmwConstructionPosition;


    @ApiModelProperty(value = " 指定租赁公司ID ")
    @TableField(exist = false)
    private String leasingCompanyId;


    @ApiModelProperty(value = "预计方量")
    private String expectVolume;

    @ApiModelProperty("备注")
    private String remark;

    @ApiModelProperty("其他备注")
    private String otherRemark;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @ApiModelProperty(value = "到达时间")
    private LocalDateTime reachTime;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "混凝土订单结束时间")
    private LocalDateTime endTime;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @ApiModelProperty(value = "操作时间")
    private LocalDateTime operTime;

    @ApiModelProperty("操作人ID")
    private String operUserId;

    @ApiModelProperty("操作类型 0 司机取消 1. 工长或者下单人取消 2. 搅拌站取消")
    private String operType;

    @ApiModelProperty("臂节数")
    private String armSegment;

    @ApiModelProperty(value = "车轴数量")
    private String axis;

    @ApiModelProperty(value = "车辆年限")
    private String years;

    @ApiModelProperty(value = "施工部位ID")
    private String positionId;

    @ApiModelProperty(value = "是否混天凝叫车 0 否 ；1 是")
    private String ifSelfChoose;


    @ApiModelProperty(value = "版本号")
    private Integer version;

    @ApiModelProperty(value = "指定车辆ID")
    private String appointVehicleId;

    @ApiModelProperty(value = "是否是指定车辆")
    private String appointOrder;

    @ApiModelProperty(value = "修改时间标志")
    private boolean updateTimeFlag;

    @ApiModelProperty(value = "指定的车辆 是否为外租车辆 0 否，1 是")
    private String outsideLeasingFlag;

    @ApiModelProperty(value = "1：泵车单 2. 混天凝订单")
    private String orderType;

    @ApiModelProperty(value = "搅拌站ID")
    private String concretePlantId;

    @ApiModelProperty(value = "搅拌站名称")
    private String concretePlantName;

    @ApiModelProperty(value = "搅拌站项目距离")
    private Double concretePlantDistance;

    @ApiModelProperty(value = "搅拌站 是否已经 确认方量 0. 未确认 1. 已确认")
    private String ensureVolumeFlag;

    @ApiModelProperty(value = "搅拌站确认方量")
    private String ensureVolume;


    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "接单时间")
    private LocalDateTime acceptOrderTime;


    private boolean  flag;

}
